iT邦幫忙

2025 iThome 鐵人賽

DAY 15
0
AI & Data

RAG × Agent:從知識檢索到智慧應用的30天挑戰系列 第 15

Day 15|RAG 評估指南(1/2):檢索指標(上)

  • 分享至 

  • xImage
  •  

昨天有說到 RAG 的效能衡量可以分成兩大類,今天就是要先介紹檢索指標(Retrieval metrics)。
我們不需要把檢索和生成混在一起看,而是可以單獨檢查檢索器,看它給出的結果有沒有符合查詢、是不是把正確的資料找回來了。
下面就讓我們來一一介紹。(雖然想放好看的中文公式,但好像不支援,所以這邊會解釋的比較多 TT)


1. 準確率 (Accuracy)

公式:Accuracy 公式
系統判為「相關」而被取回的數量(Predicted Positive) = TP + FP
文件總數 = TP + TN + FP + FN

我們先詳細的說明每個英文代表的意思:

  • TP (True Positive):真陽性 → 正確找到「相關」文件
  • TN (True Negative):真陰性 → 正確忽略「不相關」文件
  • FP (False Positive):假陽性 → 錯把「不相關」文件當作相關
  • FN (False Negative):假陰性 → 漏掉「相關」文件

我知道這樣聽起來有點饒口,不然我們就用舉例來說明,台北的店家有很多,其中有些店家「真的在賣肉燥飯」= 相關文件,有些店家「沒有賣肉燥飯」= 不相關文件,假設我們現在要找「有賣肉燥飯的店家」,我們從找到資料來判斷他是哪種情況。

  1. 真的找到一家在賣肉燥飯的**(正是我要的)**
    -> TP (True Positive)
  2. 沒有把不賣肉燥飯的店推薦給我**(沒有亂推薦別種)**
    -> TN (True Negative)
  3. 找到賣雞排的,根本沒賣肉燥飯**(騙我買別的)**
    -> FP (False Positive)
  4. 附近明明有五星好評的肉燥飯店,他卻沒跟我說!!!(忽略我可能真的想要的)
    -> FN (False Negative)

混淆矩陣

. 系統判定:相關(有推薦) 系統判定:不相關(沒推薦)
實際有賣肉燥飯 TP(推薦對了) FN(漏掉了)
實際沒賣肉燥飯 FP(誤導了) TN(忽略對了)

相信我解釋了這麼多應該也知道這個要表達的意義是甚麼了,畢竟他在這個公式上面也比較直觀,就是要找到正確預測的狀態,不過他也不是主要的檢索指標,畢竟在大型知識庫裡,TN 會非常多,就算他的 TP 很少也會因為 TN 數值較大而誤判這系統的準確率是高的。

2. 精確率 (Precision)

公式:Precision 公式
英文意思都在上面了,這邊我就不多做說明了,而這個數值要反映的是檢索到的文件(TP+FP)中,有多少比例與我們的查詢是真的相關(TP),他比較關注的是我們檢索的品質
延續我們之前的例子,假如系統推薦了 10 間店(TP+FP = 10),其中有8 間真的有賣肉燥飯(TP = 8),2 間其實是雞排店(FP = 2)。
Precisio 計算
代表他其實給的挺準的,很少是我不要的東西。

3. 前 k 筆精確率 (Precision@k)

公式:Precision@k 公式
這其實就是精確率的變形,差別就在於它只關注「前幾個」結果,我們之前在實作 RAG 的時候也有設定過要返回前幾個最相關的答案,所以 Precision@k 特別重要;它也能公平比較不同系統,因為他們檢索的結果數量其實不見得會是一樣的。

4. 召回率(Recall)

公式:Recall 公式
雖然他長得跟精確率可能很像,但其實還是有點不一樣噢!
召回率必須知道「相關文件的總數」,但在大型系統中(知識庫文件數量多),這部分的取得會變得相當困難。
召回率其實就是在表示所有相關的文件中(TP+FN),他成功的找回多少(TP),其實也有前 k 筆召回率,不過就跟前 k 筆精確率一樣,就在原先的基礎加入了只關注前幾筆這樣。


精確率 & 召回率

這邊有一張圖來表示不同精確率與召回率的組合情境:
https://ithelp.ithome.com.tw/upload/images/20250929/20178897hechwHBEum.png
圖片來源:RAG科普文!检索增强生成的技术全景解析
這邊來幫忙翻譯一下:
REL = 所有相關文件(紅色區域)
rel_ret = 檢索到的相關文件(交集)
tot_ret = 檢索到的文件總數(藍圈)

這邊展示了四個情境:

  1. High precision, low recall(高精確率、低召回率)

    只取回少量、非常確定的結果(只取回 5 筆,其中 4 筆相關、1 筆不相關)
    可能原因:k 值設太小、相似度門檻太嚴謹,容易漏掉關鍵依據

  2. Low precision, high recall(低精確率、高召回率)

    大量取回,幾乎把相關都撈到,但也夾了很多不相關
    可能原因:k 設太大、門檻太寬;常見對策:先撈多提高 Recall,再用 re-ranker 提升 Precision

  3. Low precision, low recall(低精確率、低召回率)

    取回少又髒:關鍵沒撈到(FN 多),撈到的還多半不相關(FP 多)
    可能原因: 查詢不好、索引壞、語言/分詞出錯、資料品質差。

  4. High precision, high recall(高精確率、高召回率)

    取回既全面又乾淨:幾乎所有相關都撈到,且幾乎都是真正相關
    常見做法:混合檢索(BM25+向量)+ 重排序器 + 合理的 k。


感覺今天要講完全部好像太多了,可能後面還會分成 1 ~ 2 篇解釋一下,今天先這樣啦~~~~


上一篇
Day 14|RAG 評估方法概要:量化效能,避免幻覺
下一篇
Day 16|RAG 評估指南(1/2):檢索指標(中)
系列文
RAG × Agent:從知識檢索到智慧應用的30天挑戰23
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言